#!/usr/bin/env bash
set -euo pipefail

##? action release

export NAVI_HOME="$(cd "$(dirname "$0")/.." && pwd)"
source "${NAVI_HOME}/scripts/install"

release() {

   TAR_DIR="${NAVI_HOME}/target/tar"

   target="${1:-}"
   if [[ $target == *"osx"* ]]; then
      echoerr "OSX cross-compile is impossible. Fallbacking to cargo..."
      target=""
   fi

   cd "$NAVI_HOME"

   rm -rf "${NAVI_HOME}/target" 2> /dev/null || true

   if [ -n "$target" ]; then
      cargo install cross 2> /dev/null || true
      cross build --release --locked --target "$target"
      bin_folder="${target}/release"
   else
      cargo build --release --locked
      bin_folder="release"
   fi

   bin_path="${NAVI_HOME}/target/${bin_folder}/navi"
   chmod +x "$bin_path"
   mkdir -p "$TAR_DIR" 2> /dev/null || true

   cp "$bin_path" "$TAR_DIR"

   cd "$TAR_DIR"
   tar -czf navi.tar.gz *

}

workflow() {

   WORKFLOW_DIR="${NAVI_HOME}/target/workflow"

   cd "$NAVI_HOME"

   rm -rf "${NAVI_HOME}/target" 2> /dev/null || true

   mkdir -p "$WORKFLOW_DIR" 2> /dev/null || true

   cp ${NAVI_HOME}/alfred/* "$WORKFLOW_DIR"
   cd "$WORKFLOW_DIR"
   zip -j -r navi.zip *

}

cmd="$1"
shift

case "$cmd" in
   "release") release "$@" ;;
   "workflow") workflow "$@" ;;
esac
